SPSS 过程 (Procedures)
By Ruben Geert van den Berg
定义
在 SPSS 中,“过程 (Procedures)” 指的是所有读取数据并在运行时立即执行的 SPSS 命令。
SPSS 过程 (Procedures) - 是什么以及为什么重要
那么,什么是 “SPSS 过程 (SPSS Procedures)”?区分命令是过程、转换 (Transformation) 还是其他类型的命令,为什么很重要?本教程将简要解答这两个问题,并使用 age_income.sav 数据文件进行演示。下图显示了在 数据视图 (Data View) 中打开该数据文件后的外观。
现在,假设我们想查看收入 (income) 的一些基本 描述性统计 (DESCRIPTIVES)。我们可以通过运行以下 语法 (Syntax) 来生成这些统计量:descriptives income.
。下图显示了在 输出查看器窗口 (Output Viewer Window) 中的结果。
那么,SPSS 如何向我们展示这些统计量呢?它是通过所谓的 “读取数据 (Reading the data)” 或在 SPSS 中进行数据遍历 (Data Pass)来实现的。
SPSS 数据遍历 (Data Passes)
在 SPSS 中,数据遍历 (Data Pass) 指的是 SPSS 为了收集一个或多个变量的值而遍历数据中所有个案(从上到下)的过程。下图说明了这个过程。
现在,如果我们查阅关于 DESCRIPTIVES
命令的语法参考,我们会看到以下说明:This command reads the active dataset and causes execution of any pending commands.
(此命令读取活动数据集并导致执行任何挂起的命令)。这句话的第一部分表明,运行 DESCRIPTIVES
命令会触发数据遍历 (Data Pass)。“pending commands (挂起的命令)” 指的是在运行过程 (Procedure) 时,任何已经运行但尚未执行的转换 (Transformation)。我们将在下面演示这一点。
执行转换 (Executing Transformations)
在手头的数据中,所有收入 (income) 均以欧元表示。但是,如果我们需要以美元表示呢?在收集数据时,1 欧元相当于 1.1 美元。因此,我们将通过运行 compute income_dollars = income * 1.1.
来 计算 (COMPUTE) 以美元计价的收入 (income_dollars)。现在,由于 COMPUTE
是一个转换命令 (Transformation Command),因此它不会立即执行。结果如下图所示,左半部分。但是,运行任何过程 (Procedure) - 即使与这些 “挂起的转换 (Pending Transformations)” 无关 - 都会执行它们。例如,运行 descriptives age.
会执行我们之前的 COMPUTE
命令。
SPSS 过程 (Procedures) - 实际意义
至此,我们已经了解了 “过程 (Procedures)” 在 SPSS 中的含义。那么,将过程 (Procedures) 与转换 (Transformations) 和其他命令区分开来为什么重要呢?原因是过程 (Procedures) 在许多方面表现不同:
- 过程 (Procedures) 会导致所有转换 (Transformations) 被执行;
- 与转换 (Transformations) 相比,过程 (Procedures) 不能在
LOOP
,DO REPEAT
或 DO IF 命令中使用; - 过程 (Procedures) 指示
TEMPORARY
的结束并反转临时转换 (Temporary Transformations); - 过程 (Procedures) 指示任何 VECTOR 的结束。
- 过程 (Procedures) 删除所有 暂存变量 (Scratch Variables)。
SPSS 过程 (Procedures) - 处理时间
SPSS 过程 (Procedures) 涉及数据遍历 (Data Passes);它们从上到下遍历数据中的所有个案。因此,它们的处理时间取决于数据中个案的数量。如果您的数据中有大量的个案(例如 1,000,000 或更多),那么在现代计算机上运行过程 (Procedure) 可能需要几秒钟的时间。转换 (Transformations) 和其他命令则不然。
如果您处理的是一个巨大的数据集并且处理时间是一个真正的问题,那么最小化过程 (Procedures) 的数量将使您的语法运行得更快。例如,descriptives age income.
比两个单独的 DESCRIPTIVES
命令分别处理这两个变量运行得更快。最后,删除所有不必要的 EXECUTE
命令是另一种加速的好方法。